package common

import (
	"log"

	"github.com/gorilla/websocket"
)

// 请求通用结构体
type WsCommonRequest struct {
	Cmd     int         `json:"cmd"`            // 指令码，例如 1001 表示发送私聊，1002 表示获取未读消息等
	Message string      `json:"message"`        // 可选：携带附加描述信息，例如 "用户发送消息"
	Data    interface{} `json:"data,omitempty"` // 具体业务数据，例如 chat 信息、group ID 等
}

// 响应通用结构体
type WsCommonResponse struct {
	Cmd     int         `json:"cmd"`            // 指令码（如 1001、2001...）
	Message string      `json:"message"`        // 提示信息
	Data    interface{} `json:"data,omitempty"` // 业务数据，可为任意类型
}

// 成功响应（带 data + message）
func WsSuccess(conn *websocket.Conn, message string, data interface{}) error {
	resp := WsCommonResponse{
		Cmd:     111111,
		Message: message,
		Data:    data,
	}
	err := conn.WriteJSON(resp)
	if err != nil {
		log.Println("❌ WsSuccess 发送失败:", err)
	}
	return err
}

// 成功响应（带 data + message）
func WsSuccessCmd(conn *websocket.Conn, cmd int, message string, data interface{}) error {
	resp := WsCommonResponse{
		Cmd:     cmd,
		Message: message,
		Data:    data,
	}
	err := conn.WriteJSON(resp)
	if err != nil {
		log.Println("❌ WsSuccess 发送失败:", err)
	}
	return err
}

// 失败响应（仅带错误信息）
func WsFail(conn *websocket.Conn, message string) error {
	resp := WsCommonResponse{
		Cmd:     000000,
		Message: message,
	}
	err := conn.WriteJSON(resp)
	if err != nil {
		log.Println("❌ WsFail 发送失败:", err)
	}
	return err
}
